package gamedo

import "wails/schema/enums/busenum"

// 游戏服的活动
// 运营可通过活动控制功能的开启和时间
// 注：活动下线后，不能再修改
// 注：活动上线后，配置不应该修改，否则可能会导致数据库的活动数据不匹配。
// 注：活动上线后，可修改配置里面的内容，不包括：任务信息
// @schema_export --ident=schema --json
// @schema_go
// @schema_ts
// @cache_go
// @alias D活动备案
type D活动备案 struct {
	// @alias _id
	B编号 string `alias:"_id"`
	// 活动备案的名称
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 功能
	G功能 string `alias:"功能" dlink:"功能配置"`
	// @alias 修正
	D修正 string `alias:"修正"`
	// @alias 状态
	Z状态 H活动备案状态 `alias:"状态"`
	// @alias 登记人数
	D登记人数 int `alias:"登记人数"`
	// 活动的上架时间
	// 场景：某些活动需要预热，在活动开始前就能看到活动页面
	// @alias 上架时间
	S上架时间 string `alias:"上架时间"`
	// 活动的下架时间
	// 场景：排行榜活动结束后，需要多挂一天，让玩家查看结果
	// @alias 下架时间
	X下架时间 string `alias:"下架时间"`
	// 活动开始时间
	// @alias 开始时间
	K开始时间 string `alias:"开始时间"`
	// 活动结束时间，进行活动的结算
	// @alias 结束时间
	J结束时间 string `alias:"结束时间"`
	// 如果下架时间可以转化成具体的时间，将生成过期时间，查找数据库时用于过滤掉过期的活动
	// 场景：时间类型为具体时间、开服时间
	// @alias 过期时间
	G过期时间 int `alias:"过期时间"`
	// @alias 备注
	// @alias 备注
	B备注 string `alias:"备注"`
	// 创建该备案的管理人员
	// @alias 创建者
	C创建者 string `alias:"创建者"`
	// 属于的活动组合
	// @alias 活动组合
	Z活动组合 map[string]*S活动备案项 `alias:"活动组合"`
	// @alias 更新时间
	G更新时间 int `alias:"更新时间"`
	// @alias 创建时间
	C创建时间 int `alias:"创建时间"`
}

// @alias 活动备案项
type S活动备案项 struct {
	// 活动的名称，默认与配置名称相同
	// @alias 名称
	M名称 string `alias:"名称"`
	// @alias 配置
	P配置 string `alias:"配置" dlink:"功能配置"`
	// @alias 修正
	D修正 string `alias:"修正"`
	// 功能的主体
	// @alias 主体
	Z主体 busenum.G功能主体
	// 活动开始时间
	// @alias 开始时间
	K开始时间 string `alias:"开始时间"`
	// 活动结束时间，进行活动的结算
	// @alias 结束时间
	J结束时间 string `alias:"结束时间"`
}

type Y游戏服选择 struct {
	// @alias 需要游戏服编组
	X需要游戏服编组 map[string]string `alias:"需要游戏服编组" dlink:"游戏服编组"`
	// @alias 需要游戏服
	X需要游戏服 map[string]string `alias:"需要游戏服" dlink:"游戏服"`
	// @alias 排除游戏服编组
	P排除游戏服编组 map[string]string `alias:"排除游戏服编组" dlink:"游戏服编组"`
	// @alias 排除游戏服
	P排除游戏服 map[string]string `alias:"排除游戏服" dlink:"游戏服"`
}

// @schema_go
// @schema_ts
// @alias 活动备案状态
type H活动备案状态 int

const (
	H活动备案状态_未知 H活动备案状态 = iota
	// 审核状态时，只有GM有效
	H活动备案状态_审核
	// 备案被拒绝的状态
	H活动备案状态_拒绝
	// 备案通过后进入正常状态
	H活动备案状态_正常
	// 失效状态
	H活动备案状态_失效
)
